package dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import dominio.RemitoCliente;

public class RemitoClienteDAO {
	private static String query_buscarRemitoCliente = "from RemitoCliente r where r.id = (:id)";
	private static String query_listarRemitos = "from RemitoCliente r where r.pendiente = true";

	private static RemitoClienteDAO instancia = null;

	public static RemitoClienteDAO getInstance() {
		if (instancia == null)
			instancia = new RemitoClienteDAO();
		return instancia;
	}

	private RemitoClienteDAO() {}

	public int guardarRemitoCliente(RemitoCliente rc) {
		Session s = HibernateDAO.getInstance().getSession();
		s.beginTransaction();
		s.saveOrUpdate(rc);
		s.getTransaction().commit();
		return rc.getId();
	}

	public RemitoCliente buscarRemitoCliente(int id) {
		Session s = HibernateDAO.getInstance().getSession();
		Query query = s.createQuery(query_buscarRemitoCliente);
		query.setParameter("id", id);
		query.setMaxResults(1);
		return (RemitoCliente) query.uniqueResult();
	}

	@SuppressWarnings("unchecked")
	public List<RemitoCliente> listarRemitosPendientes() {
		Session s = HibernateDAO.getInstance().getSession();
		return s.createQuery(query_listarRemitos).list();
	}
}